#include "bsp_exti.h"
#include "RC.h"

GPIO_PinTypeDef gpio_pins[] = 
{
    {GPIOA, GPIO_PIN_15},
    {GPIOC, GPIO_PIN_7},
    {GPIOC, GPIO_PIN_8},
    {GPIOC, GPIO_PIN_10},
    {GPIOC, GPIO_PIN_11},
    {GPIOC, GPIO_PIN_12},
    {GPIOD, GPIO_PIN_2},
    {GPIOB, GPIO_PIN_3},
};

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin==GPIO_PIN_1)
	{
		if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_SET)
        {         
            RC_Data.save_flag = 0;
        }
        else
        {      
            RC_Data.save_flag = 1;
        }
	}
	
	for (uint8_t i = 0; i < 8; i++)
    {
        if (gpio_pins[i].GPIO_Pin == GPIO_Pin)
        {
            if (HAL_GPIO_ReadPin(gpio_pins[i].GPIOx, GPIO_Pin) == GPIO_PIN_SET)
            {             
                RC_Data.cmd_gear = i+1;
                RC_Send_Data(&RC_Data);
            }
            else
            {              
                RC_Data.cmd_gear = 0;
            }
            break; 
		}
    }
		
	if(GPIO_Pin==GPIO_PIN_4)
	{
		if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4) == GPIO_PIN_SET)
        {         
            RC_Data.mode = 1;
        }
        else
        {      
            RC_Data.mode = 0;
        }
	}
}